﻿using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Linq;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Popups;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;

// Шаблон элемента пустой страницы задокументирован по адресу http://go.microsoft.com/fwlink/?LinkId=234238

namespace JarvisProject1
{
    public sealed partial class MainPage : Page
    {
        DispatcherTimer timer;
        Random rand = new Random();
        public ObservableCollection <CollectionObjects> _object;

        public MainPage()
        { 
            this.InitializeComponent();
            this.NavigationCacheMode = NavigationCacheMode.Enabled;

            timer = new DispatcherTimer();
            timer.Tick += timer_Tick;
            timer.Interval = TimeSpan.FromSeconds(3);
            timer.Start();

            _object = new ObservableCollection <CollectionObjects>();
            _object.Add(new CollectionObjects { });

            //-------------------
            Items(); // Добавление информации
            //-------------------
        }

        void timer_Tick(object sender, object e)
        {
            //UpdateItemRubric();
        }

        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            //TODO.................................................. 
        }

        //"Вперед" на 1 grid регистрации
        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            if (Email.Text == "")
            { 
                Email.BorderBrush = RAM.BorderBrush;
                Error_Copy4.Visibility = Visibility.Visible;
                Error_Copy3.Visibility = Visibility.Visible;
                Error_Text_Copy.Visibility = Visibility.Visible;
            }
            else
            { Grid_2.Visibility = Visibility.Visible; Shag.Text = "2"; }
        }

        //"Вперед" на 2 grid регистрации
        private void Button_Click_2(object sender, RoutedEventArgs e)
        {
            Funktions f = new Funktions();
            int rez = 0;
            //--------------------------------------------------------------
            if ((Teg_Jarvis.Text == "")||(!f.NikIdentificator(Teg_Jarvis.Text)))
            {
                Teg_Jarvis.BorderBrush = RAM.BorderBrush;
                Error.Visibility = Visibility.Visible;
                Error_Copy.Visibility = Visibility.Visible;
                Error_Text.Visibility = Visibility.Visible;
                rez++;
            }
            int ram = 0;
            for (int i = 0; i < Teg_Jarvis.Text.Length; i++)
            {
                if ((Teg_Jarvis.Text[i] > 64 && Teg_Jarvis.Text[i] < 91)
                    || (Teg_Jarvis.Text[i] > 96 && Teg_Jarvis.Text[i] < 123))
                { }
                else
                { ram++; }
            }
            if (ram > 0)
            {
                Teg_Jarvis.BorderBrush = RAM.BorderBrush;
                Error.Visibility = Visibility.Visible;
                Error_Copy.Visibility = Visibility.Visible;
                Error_Text.Visibility = Visibility.Visible;
                rez++;
            }
            //--------------------------------------------------------------
            if (Password_new.Password.Length < 8)
            { 
                Password_new.BorderBrush = RAM.BorderBrush;
                Error_Copy1.Visibility = Visibility.Visible;
                Error_Copy.Visibility = Visibility.Visible;
                Error_Text.Visibility = Visibility.Visible;
                rez++;
            }
            //--------------------------------------------------------------
            if (Password_new_2.Password.Length < 8)
            {
                Password_new_2.BorderBrush = RAM.BorderBrush;
                Error_Copy2.Visibility = Visibility.Visible;
                Error_Copy.Visibility = Visibility.Visible;
                Error_Text.Visibility = Visibility.Visible;
                rez++;
            }
            //--------------------------------------------------------------
            if (Password_new.Password != Password_new_2.Password)
            {
                Password_new.BorderBrush = RAM.BorderBrush;
                Password_new_2.BorderBrush = RAM.BorderBrush;
                Error_Copy1.Visibility = Visibility.Visible;
                Error_Copy2.Visibility = Visibility.Visible;
                Error_Copy.Visibility = Visibility.Visible;
                Error_Text.Visibility = Visibility.Visible;
                rez++;
            }
            if (rez == 0)
            { Grid_3.Visibility = Visibility.Visible; Shag.Text = "3"; }
        }

        //"Регистрация"
        private void Button_Click_3(object sender, RoutedEventArgs e)
        {
            if (GRID_VXOD.Visibility != Visibility.Visible)
            {
                GRID_REGISTER.Visibility = Visibility.Visible;
                Shag.Text = "1";
            }
        }

        //"Войти" видимость
        private void Button_Click_4(object sender, RoutedEventArgs e)
        {
            if (GRID_REGISTER.Visibility != Visibility.Visible)
            {
                GRID_VXOD.Visibility = Visibility.Visible;
            }
        }

        //Фокус Login'а
        private void Login_GotFocus(object sender, RoutedEventArgs e)
        {
            Login.BorderBrush = RAM2.BorderBrush;
            if (Login.Text == "Логин")
            { Login.Text = ""; }
        }

        //Фокус Password'а
        private void Password_GotFocus(object sender, RoutedEventArgs e)
        {
            Password.BorderBrush = RAM2.BorderBrush;
            if (Login.Text == "") { Login.Text = "Логин"; }
        }

        //"Вход"
        Usser user = new Usser();
        Funktions f = new Funktions();
        string surname = "";
        string name = "";
        private void Button_Click_5(object sender, RoutedEventArgs e)
        {
            if (((Login.Text == "" || Login.Text == "Логин") && Password.Password == "") || f.UserIdentificator(Login.Text, Password.Password))
            { Login.BorderBrush = RAM.BorderBrush; Password.BorderBrush = RAM.BorderBrush; }
            else
            {
                //GRID_REGISTER.Visibility = Visibility.Collapsed;
                GRID_VXOD.Visibility = Visibility.Collapsed;
                user = f.GetUserInform(Login.Text, Password.Password);
                IN_Profile();
                IN_and_OUT.Visibility = Visibility.Collapsed;
                Avatar_Profile.Visibility = Visibility.Visible;
            }
            
        }

        //"Email" фокус
        private void Email_GotFocus(object sender, RoutedEventArgs e)
        {
            Email.BorderBrush = RAM2.BorderBrush;
            Error_Copy4.Visibility = Visibility.Collapsed;
            Error_Copy3.Visibility = Visibility.Collapsed;
            Error_Text_Copy.Visibility = Visibility.Collapsed;
        }

        //"Назад" 2 на grid'е 
        private void Button_Click_6(object sender, RoutedEventArgs e)
        {
            Grid_2.Visibility = Visibility.Collapsed;
            Grid_1.Visibility = Visibility.Visible;
        }

        private void Teg_Jarvis_GotFocus(object sender, RoutedEventArgs e)
        {
            Teg_Jarvis.BorderBrush = RAM2.BorderBrush;
            Error.Visibility = Visibility.Collapsed;
        }

        private void Password_new_GotFocus(object sender, RoutedEventArgs e)
        {
            Password_new.BorderBrush = RAM2.BorderBrush;
            Error_Copy1.Visibility = Visibility.Collapsed;
        }

        private void Password_new_2_GotFocus(object sender, RoutedEventArgs e)
        {
            Password_new_2.BorderBrush = RAM2.BorderBrush;
            Error_Copy2.Visibility = Visibility.Collapsed;
        }

        private void Day_of_Birth_GotFocus(object sender, RoutedEventArgs e)
        {
            Day_of_Birth.BorderBrush = RAM2.BorderBrush;
            Error2_Copy.Visibility = Visibility.Collapsed;
            if (Day_of_Birth.Text == "День")
            { Day_of_Birth.Text = ""; }
        }

        //"Готово" в последнем блоке регистрации
        private void Button_Click_7(object sender, RoutedEventArgs e)
        {
            int rez = 0;
            //----------------------------------------------------------------
            int ram = 0;
            for (int i = 0; i < Day_of_Birth.Text.Length; i++)
            {
                if (Day_of_Birth.Text[i] > 47 && Day_of_Birth.Text[i] < 58)
                { }
                else
                { ram++; }
            }
            if (ram > 0)
            {
                Day_of_Birth.BorderBrush = RAM.BorderBrush;
                Error2_Copy.Visibility = Visibility.Visible;
                Error_Text2.Visibility = Visibility.Visible;
                Error2.Visibility = Visibility.Visible;
                rez++;
            }
            if (Day_of_Birth.Text == "")
            {
                Day_of_Birth.BorderBrush = RAM.BorderBrush;
                Error2_Copy.Visibility = Visibility.Visible;
                Error_Text2.Visibility = Visibility.Visible;
                Error2.Visibility = Visibility.Visible;
                rez++;
            }
            //----------------------------------------------------------------
            int ram2 = 0;
            for (int i = 0; i < Year_of_Birth.Text.Length; i++)
            {
                if (Year_of_Birth.Text[i] > 47 && Year_of_Birth.Text[i] < 58)
                { }
                else
                { ram2++; }
            }
            if (ram2 > 0)
            {
                Year_of_Birth.BorderBrush = RAM.BorderBrush;
                Error2_Copy.Visibility = Visibility.Visible;
                Error_Text2.Visibility = Visibility.Visible;
                Error2.Visibility = Visibility.Visible;
                rez++;
            }
            if (Year_of_Birth.Text == "")
            {
                Year_of_Birth.BorderBrush = RAM.BorderBrush;
                Error2_Copy.Visibility = Visibility.Visible;
                Error_Text2.Visibility = Visibility.Visible;
                Error2.Visibility = Visibility.Visible;
                rez++;
            }
            //-----------------------------------------------------------------
            if (rez == 0)
            {
                if (Terms_OFF.IsChecked == true)
                {
                    GRID_REGISTER.Visibility = Visibility.Collapsed;
                    IN_DataBase_and_IN_Profile();
                    IN_and_OUT.Visibility = Visibility.Collapsed;
                    Avatar_Profile.Visibility = Visibility.Visible;
                    int pol = Floor.SelectedIndex;
                    switch (pol)
                    {
                        case 0: user.Pol = "Мужчина"; break;
                        case 1: user.Pol = "Женщина"; break;
                        case 2: user.Pol = "Не выбран"; break;
                    }
                    string burthdate = "";
                    if (int.Parse(Day_of_Birth.Text) < 9)
                        burthdate = Day_of_Birth.Text;
                    else
                        burthdate = "0" + Day_of_Birth.Text;
                    if(Month_of_Birth.SelectedIndex<9)
                        burthdate=burthdate+".0"+(Month_of_Birth.SelectedIndex+1).ToString()+"."+Year_of_Birth.Text;
                    else
                        burthdate=burthdate+"."+(Month_of_Birth.SelectedIndex+1).ToString()+"."+Year_of_Birth.Text;
                    f.Registration(Familiya.Text + " " + Name.Text, Country.SelectedIndex, Teg_Jarvis.Text, Password_new.Password, Email.Text, burthdate, user.Pol);
                    user = f.GetUserInform(Teg_Jarvis.Text, Password_new.Password);
                }
                else 
                { Error2_Copy1.Visibility = Visibility.Visible; }
            }
        }

        private void Year_of_Birth_GotFocus(object sender, RoutedEventArgs e)
        {
            Year_of_Birth.BorderBrush = RAM2.BorderBrush;
            Error2_Copy.Visibility = Visibility.Collapsed;
            if (Year_of_Birth.Text == "Год")
            { Year_of_Birth.Text = ""; }
        }

        private void Out1_Click(object sender, RoutedEventArgs e)
        {
            GRID_REGISTER.Visibility = Visibility.Collapsed;
        }

        private void Out2_Click(object sender, RoutedEventArgs e)
        {
            Grid_2.Visibility = Visibility.Collapsed;
            GRID_REGISTER.Visibility = Visibility.Collapsed;
        }

        private void Button_Click_8(object sender, RoutedEventArgs e)
        {
            Grid_3.Visibility = Visibility.Collapsed;
            Shag.Text = "2";
        }

        private void Out3_Click(object sender, RoutedEventArgs e)
        {
            Grid_3.Visibility = Visibility.Collapsed;
            Grid_2.Visibility = Visibility.Collapsed;
            GRID_REGISTER.Visibility = Visibility.Collapsed;
        }

        private void Button_Click_9(object sender, RoutedEventArgs e)
        {
            Grid_2.Visibility = Visibility.Collapsed;
            Shag.Text = "1";
        }

        private void Button_Click_10(object sender, RoutedEventArgs e)
        {
            GRID_VXOD.Visibility = Visibility.Collapsed;
        }

        // Условия использования
        private void HyperlinkButton_Click_1(object sender, RoutedEventArgs e)
        {
            this.Frame.Navigate(typeof(Terms_of_Use)); 
        }

        private async void Avatar_Profile_Click(object sender, RoutedEventArgs e)
        {
            var popupMenu = new PopupMenu();

            popupMenu.Commands.Add(new UICommand("Профиль", new UICommandInvokedHandler((args) =>
            { Block_Avtor.Visibility = Visibility.Visible; })));
            popupMenu.Commands.Add(new UICommand("Выйти", new UICommandInvokedHandler((args) =>
            { Avatar_Profile.Visibility = Visibility.Collapsed; IN_and_OUT.Visibility = Visibility.Visible; })));

            var button = (Button)sender;
            var transform = button.TransformToVisual(this); 
            var point = transform.TransformPoint(new Point(170, 165));
            await popupMenu.ShowAsync(point);
        }

        // Занесение инофрмации о пользователе в базу данных и заполнение
        // от туда блока "Профиль"
        private void IN_DataBase_and_IN_Profile()
        {           
            //--------------------------------;
            Family_Avatar.Text = Familiya.Text;
            Name_Avatar.Text = Name.Text;
            //--------------------------------;
            Block_Av_Family.Text = Familiya.Text;
            Block_Av_Name.Text = Name.Text;
            Block_Av_Email.Text = Email.Text;
            //--------------------------------;
            Block_Av_Family2.Text = Familiya.Text;
            Block_Av_Name2.Text = Name.Text;
            Block_Av_Email2.Text = Email.Text;
            //--------------------------------;
            Block_Av_Family1.Text = Familiya.Text;
            Block_Av_Name1.Text = Name.Text;
            //--------------------------------;
            

            // Вставить Дату!!!
            if (Country.SelectedIndex == 0)
            { Block_Av_Country.Text = "США"; }
            if (Country.SelectedIndex == 1)
            { Block_Av_Country.Text = "Россия"; }
        }
        private void IN_Profile()
        {
            string [] tmp = user.Name.Split(' ');
            surname = tmp[0];
            name = tmp[1];
            //--------------------------------;
            Family_Avatar.Text = surname;
            Name_Avatar.Text = name;
            //--------------------------------;
            Block_Av_Family.Text = surname;
            Block_Av_Name.Text = name;
            Block_Av_Email.Text = user.Email;
            //--------------------------------;
            Block_Av_Family2.Text = surname;
            Block_Av_Name2.Text = name;
            Block_Av_Email2.Text = Email.Text;
            //--------------------------------;
            Block_Av_Family1.Text = surname;
            Block_Av_Name1.Text = name;
            //--------------------------------;


            // Вставить Дату!!!
            if (Country.SelectedIndex == 0)
            { Block_Av_Country.Text = "США"; }
            if (Country.SelectedIndex == 1)
            { Block_Av_Country.Text = "Россия"; }
        }
        // Настройка информации для входа в учетную запись
        private void Button_Click_11(object sender, RoutedEventArgs e)
        {
            Redactor_Vxod_Profile.Visibility = Visibility.Visible;
        }
        private void Button_Click_VHOD_YES(object sender, RoutedEventArgs e)
        {
            if (OldPassword.Password == user.Password)
            {
                if (NewPassWord.Password == DoublePassword.Password)
                {
                    user.Password = NewPassWord.Password;
                    f.UpdateUser(user.NikName, "Password", user.Password);
                }
                else
                    DoublePassword.BorderBrush = RAM.BorderBrush;
            }
            else
            {
                OldPassword.BorderBrush = RAM.BorderBrush;
                NewPassWord.BorderBrush = RAM.BorderBrush;
                DoublePassword.BorderBrush = RAM.BorderBrush;
            }
            if (NewEmail.Text != "")
            {
                user.Email = NewEmail.Text;
                f.UpdateUser(user.NikName, "Email", user.Email);
            }
            IN_Profile();           
        }
        // Настройка личной информации учетной записи
        private void Button_Click_12(object sender, RoutedEventArgs e)
        {
            Redactor_PersonalInfo_Profile.Visibility = Visibility.Visible;
        }

        // Выход из блока "Профиль"
        private void Button_Click_13(object sender, RoutedEventArgs e)
        {
            Redactor_PersonalInfo_Profile.Visibility = Visibility.Collapsed;
            Redactor_Vxod_Profile.Visibility = Visibility.Collapsed;
            Block_Avtor.Visibility = Visibility.Collapsed;
        }

        // Выход из блока настроек "Для входа"
        private void Button_Click_14(object sender, RoutedEventArgs e)
        {
            Redactor_Vxod_Profile.Visibility = Visibility.Collapsed;
        }
        private void Button_Click_YES(object sender, RoutedEventArgs e)
        {
            string[] tmp = user.BurthData.Split('-');           
            int pol;
            string year;
            string day;
            string month;
            year = tmp[0];
            month = tmp[1];
            day = tmp[2];
            if (NewName.Text != "")
                name = NewName.Text;
            if (NewSurname.Text != "")
                surname = NewSurname.Text;
            if (NewYear.Text != "")
                year = NewYear.Text;
            if (NewDay.SelectedIndex != -1)
            {
                if (NewDay.SelectedIndex < 9)
                    day = "0" + (NewDay.SelectedIndex + 1).ToString();
                else
                    day = (NewDay.SelectedIndex + 1).ToString();
            }
            if (NewMonth.SelectedIndex != -1)
            {
                if (NewMonth.SelectedIndex < 9)
                    month = "0" + (NewMonth.SelectedIndex + 1).ToString();
                else
                    month = (NewMonth.SelectedIndex + 1).ToString();
            }
            if (NewCountry.SelectedIndex != -1)
                user.Geograph = NewCountry.SelectedIndex;
            if (NewPol.SelectedIndex != -1)
            {
                pol = NewPol.SelectedIndex;
                switch (pol)
                {
                    case 0: user.Pol = "Мужчина"; break;
                    case 1: user.Pol = "Женщина"; break;
                    case 2: user.Pol = "Не выбран"; break;
                }
            }
            user.Name = surname + " " + name;
            user.BurthData = year + "-" + month + "-" + day;
            f.UpdateUserProfil(user.NikName, user.Name, user.BurthData, user.Geograph, user.Pol, user.Password);
            IN_Profile();
            Redactor_PersonalInfo_Profile.Visibility = Visibility.Collapsed;
        }
        // Выход из блока настроек "Персональные..."
        private void Button_Click_15(object sender, RoutedEventArgs e)
        {
            Redactor_PersonalInfo_Profile.Visibility = Visibility.Collapsed;
        }

        public void UpdateItemRubric()
        {
            int randItem = rand.Next(0, gvMain.Items.Count);
            int randItem_2 = rand.Next(0, gvMain.Items.Count);

            _object[0]._Rubrics[randItem] = new Rubrika_Object
            {
                RubrikName = _object[0]._Rubrics[randItem].RubrikName,
                Rubrik_Image_Adress = _object[0]._Rubrics[randItem].Rubrik_Image_Adress,
                HorizontalSize = _object[0]._Rubrics[randItem].HorizontalSize,
                VerticalSize = _object[0]._Rubrics[randItem].VerticalSize,
                Messsages = _object[0]._Rubrics[randItem].Messsages
            };
        }

        // Метод добавления новой информации
        public void Items()
        {
            int ram = rand.Next(1, 9);
            string dimm = "/Assets/Bloks/" + ram.ToString() + ".jpg";

            // 1 рубрика
            //----------------------------------------------------------;
            _object[0]._Rubrics.Add(new Rubrika_Object
            {
                RubrikName = "Информационные технологии",
                Rubrik_Image_Adress = "/Assets/Rubric1/Info.jpg",
                HorizontalSize = rand.Next(0, 3),
                VerticalSize = 1
            });

            // 2 рубрика
            //----------------------------------------------------------;
            _object[0]._Rubrics.Add(new Rubrika_Object
            {
                RubrikName = "Мир спортивных машин",
                Rubrik_Image_Adress = "/Assets/Rubric2/Auto.jpg",
                HorizontalSize = rand.Next(0, 3),
                VerticalSize = 1
            });

            // 3 рубрика
            //----------------------------------------------------------;
            _object[0]._Rubrics.Add(new Rubrika_Object
            {
                RubrikName = "Известные личности",
                Rubrik_Image_Adress = "/Assets/Rubric3/Lichnost.jpg",
                HorizontalSize = rand.Next(0, 3),
                VerticalSize = 1
            });

            // Сообщения 1 рубрики
            _object[0]._Rubrics[0].Messsages.Add(new ObjectMessage
            {
                Name_Message = "Что это?",
                ImageAdress = "/Assets/Rubric1/InfoMessage.jpg",
                Text_of_Message = "Информацио́нные техноло́гии (ИТ, от англ. information technology, IT) — широкий класс дисциплин и областей деятельности, относящихся к технологиям создания, сохранения, управления и обработки данных, в том числе с применением вычислительной техники. В последнее время под информационными технологиями чаще всего понимают компьютерные технологии. В частности, ИТ имеют дело с использованием компьютеров и программного обеспечения для создания, хранения, обработки, ограничения к передаче и получению информации. Специалистов по компьютерной технике и программированию часто называют ИТ-специалистами.Согласно определению, принятому ЮНЕСКО, ИТ — это комплекс взаимосвязанных научных, технологических, инженерных дисциплин, изучающих методы эффективной организации труда людей, занятых обработкой и хранением информации; вычислительную технику и методы организации и взаимодействия с людьми и производственным оборудованием, их практические приложения, а также связанные со всем этим социальные, экономические и культурные проблемы. Сами ИТ требуют сложной подготовки, больших первоначальных затрат и наукоемкой техники. Их внедрение должно начинаться с создания математического обеспечения, моделирования, формирования информационных хранилищ для промежуточных данных и решений.",
                HorizontalSize = 1,
                VerticalSize = 1
            });
            _object[0]._Rubrics[0].Messsages.Add(new ObjectMessage
            {
                Name_Message = "Использование информационных технологий в бизнесе",
                ImageAdress = "/Assets/Rubric1/InfoMessage2.jpg",
                Text_of_Message = "Взаимодействие информационных технологий и бизнеса проявляется в следующем: 1) ИТ-технологии повышают эффективность и конкурентоспособность практически любого бизнеса; 2) в настоящее время весь бизнес перемещается в Интернет, поэтому любой компании надо иметь стратегию для новой реальности; 3) если у компании нет подобной стратегии — у неё нет будущего. [3].Информационные технологии как инструмент повышения эффективности основного бизнеса необходимо использовать продуманно и взвешенно. Положительный эффект достигается лишь в том случае, если у руководства компании существует ясное представление о целях будущих действий. То есть, если появляется инструмент, способный приносить пользу бизнесу, необходимо предвидеть на несколько шагов вперед, как будет развиваться сам бизнес и как необходимо развивать применение ИТ-технологии для поддержания успешной реализации бизнес-стратегии. Иначе, этот весьма мощный инструмент, к тому же дорогой и сложный в использовании, пользы бизнесу, к сожалению, не принесет, а средства на ИТ будут потрачены зря. [4].",
                HorizontalSize = 1,
                VerticalSize = 1
            });
            _object[0]._Rubrics[0].Messsages.Add(new ObjectMessage
            {
                Name_Message = "Статистика по России",
                ImageAdress = "/Assets/Rubric1/InfoMessage3.jpg",
                Text_of_Message = "Согласно данным, собранным Тимуром Фарукшиным (директором по консалтингу IDC в России и СНГ) за 2010 год, по денежным расходам на ИТ-оборудование, Россия входила в первую десятку ведущих стран мира, уступая развитым странам Западной Европы и США в 3-5 раз по расходам на ИТ-оборудование на душу населения. Значительно меньше тратится в России на покупку программного обеспечения на душу населения, в этом пункте расходов Россия отстаёт от США в 20 раз, от ведущих стран Западной Европы — в 10 раз, а от среднемирового показателя — на 55 %. По оказанию ИТ-услуг за 2010 год Россия заняла лишь 22 место и уступила среднемировому показателю на 66 %[5].По оценкам ИТ-специалистов, основной проблемой развития ИТ-технологий в России является цифровой разрыв между различными российскими регионами. По статистике 2010 года отставание в этой области таких регионов как Дагестан и Ингушетия, по сравнению с Москвой, Санкт-Петербургом, Томской областью, Ханты-Мансийским и Ямало-Ненецким автономными округами по отдельным показателям даже имеет тенденцию к увеличению. Поскольку недостаток ИТ-специалистов и общий образовательный уровень населения в отстающих регионах по сравнению с передовыми, в 2010 году уже достигал соотношения 1/11,2; несмотря на то, что доступ школ к интернету отстающих и передовых регионов имел меньшее соотношение — 1/2,2[5].Аналитиками IDC был составлен отчёт с прогнозами по расходам и о направлении тенденций финансовых потоков в развитие информационных технологий в России в 2011—2015 годах. Согласно прогнозам IDC, за этот пятилетний период среднегодовые темпы роста расходов на информационные технологии в России составят 11,6 %. В 2015 годовой расход средств на развитие информационных технологий достигнет 41,1 миллиарда долларов США[6].",
                HorizontalSize = 1,
                VerticalSize = 1
            });

            // Сообщения 2 рубрики
            _object[0]._Rubrics[1].Messsages.Add(new ObjectMessage
            {
                Name_Message = "Ferrari 458 Italia ",
                ImageAdress = "/Assets/Rubric2/Ferrari.jpg",
                Text_of_Message = "Ferrari 458 Italia демонстрирует абсолютно новые стандарты в области аэродинамики, спортивной мощности, эргономики и дизайна.В этом автомобиле был впервые установлен новый двигатель V8 объемом 4499 см3. Это первый мотор Ferrari с прямым впрыском топлива, устанавливаемый в центрально-заднем положении. Главное достоинство этого двигателя – крайне высокая степень сжатия, характерная для гоночных моторов. Коэффициент сжатия составляет 12.5:1. Двигатель V8 оснащен традиционным плоским коленчатым валом и способен развивать 570 л.с. при 9000 оборотах в минуту. Таким образом, его выходная мощность составляет 127 л.с./литр. И это не просто впечатляющий показатель, это настоящий прорыв как в истории автомобилей Ferrari, так и во всем сегменте элитных спорткаров. Максимальный крутящий момент двигателя при 6000 оборотах составляет 540 Нм в минуту, при этом более 80 % которых доступны, начиная с 3250 оборотов в минуту. Удельный крутящий момент равен 120 Нм/литр. Величина крутящего момента сочетается с высокой мощностью при низких оборотах двигателя, что является важнейшим достижением разработчиков модели.Феррари 458 Италия оснащается семискоростной коробкой передач с двойным сцеплением, за счет которой обеспечивается плавное переключение даже при полном открытии дроссельной заслонки и таким образом улучшаются эксплуатационные характеристики автомобиля. Инженерами были разработаны более спортивные передаточные числа, которые соответствуют кривым мощности и крутящего момента двигателя V8, что обеспечивает высокий крутящий момент при низких скоростях вращения коленчатого вала двигателя. Благодаря этим инновациям автомобиль может достичь лучших динамических характеристик на максимальной передаче.В Ferrari 458 Italia устанавливается двухрычажная подвеска спереди и многорычажная сзади, что обеспечивает автомобилю великолепную курсовую устойчивость и управляемость. Благодаря более прямому передаточному числу рулевого механизма владелец автомобиля может максимально быстро проходить повороты и наслаждаться суперкомфортным скоростным вождением. В новом Феррари 458 Италия интеграция электронно-управляемого дифференциала E-Diff3 и системы контроля тяги F1-Trac (теперь контролируемой тем же блоком управления двигателя) еще более усилилась. Теперь продольное ускорение на выходе из виража стало лучше на 32 процента в сравнении с предыдущими моделями. Управляющая электроника также была усовершенствована. Подсчет уровней сцепления с дорогой стал более быстрым и точным, что гарантирует стабильную курсовую устойчивость и отличную управляемость модели.Интерьер автомобиля выдержан в спортивном стиле. Новая компоновка салона и более эргономичный интерфейс – вот что выделяет модель среди аналогов в своем классе. Основные элементы управления сосредоточены на рулевом колесе, что позволяет производить все необходимые регулировки, не отвлекаясь от контроля дорожной ситуации.",
                HorizontalSize = 1,
                VerticalSize = 1
            });
            _object[0]._Rubrics[1].Messsages.Add(new ObjectMessage
            {
                Name_Message = "Lamborghini Gallardo",
                ImageAdress = "/Assets/Rubric2/Lambor.jpg",
                Text_of_Message = "Lamborghini Gallardo впревые была показана на Женевском автосалоне 2003-го года. Новинка имела 5-литровый 40-клапанный двигатель V10 мощностью 500 л.с. в сочетании с новой 6-скоростной механической коробкой передач и полным приводом. У Gallardo традиционные навесные двери, в отличие от таких больших Lamborgini как Countach, Diablo и Murcielago.Предполагалось выпустить 800-850 машин в 2003 году, и 1300 в 2004. В соответствии с традициями компаниями название модели идет от породы быков, участвовавших в корриде. Порода Gallardo была выведена в Испании в 18 веке Антонио Галлардо и была выкуплена у него Доном Антонио Миура, в честь которого была названа известная модель Lamborghini.Через два года после дебюта модели выходит новая версия. Gallardo SE. Special Edition была выпущена тиражом всего в 250 экземпляров. Внешне автомобиль отличался по двухцветной окраске кузова, однако, основные достоинства суперкара скрываются от невооруженного глаза наблюдателя. Во-первых, Gallardo «начинили» полным приводом, кондиционером, различными системами безопасности. Автомобиль стал доступен в шести вариантах окраски: Ballon White (Серые оттенки), Giallo Midas (желтый), Aranco Borealis (оранжевый) и Verde Ithaca (зеленый). Крышу, двигатель, бамперы, зеркала заднего вида можно было покрасить лишь в один цвет — Nero Noctis (черный). Вот таким нехитрым способом итальянцам и удалось достигнуть богатства палитры.Двигатель и коробка передач тоже были серьёзно доработаны. В результате, разгон до «сотни» сократился на 0,2 сек. и составил 4,2 секунды, а максимальная скорость выросла с 309 км/ч до 315 км/ч.",
                HorizontalSize = 1,
                VerticalSize = 1
            });
            _object[0]._Rubrics[1].Messsages.Add(new ObjectMessage
            {
                Name_Message = "Bugatti Veyron",
                ImageAdress = "/Assets/Rubric2/Bugatti.jpg",
                Text_of_Message = "Bugatti Veyron 16.4 — самый дорогой, самый мощный и самый быстрый автомобиль в мире, разрешенный к использованию на общественных дорогах.На Bugatti Veyron стоят уникальные вентилируемые углекерамические тормозные диски и 8-ми поршневые тормозные суппорты. На скоростях свыше 200 км/ч, при торможении, задействуется антикрыло, выступающее в роли аэродинамического тормоза. Время разворота крыла до угла 70 градусов составляет 0,4 секунды после начала торможения. Время, которое требуется автомобилю, мчащемуся с максимальной скоростью для полной остановки, составляет 10 секунд, причем Bugatti Veyron не смещается при торможении с прямолинейной траектории, даже если водитель отпустит рулевое колесо.",
                HorizontalSize = 1,
                VerticalSize = 1
            });

            // Сообщения 3 рубрики
            _object[0]._Rubrics[2].Messsages.Add(new ObjectMessage
            {
                Name_Message = "Билл Гейтс",
                ImageAdress = "/Assets/Rubric3/Bill.jpg",
                Text_of_Message = "Уи́льям Ге́нри Гейтс III (англ. William Henry Gates III; 28 октября 1955, Сиэтл[1]), более известный как Билл Гейтс (англ. Bill Gates) — американский предприниматель и общественный деятель, один из создателей (совместно с Полом Алленом) и крупнейший акционер компании Microsoft. До июня 2008 года являлся руководителем компании, после ухода с поста остался в должности её неисполнительного председателя совета директоров. Также является сопредседателем благотворительного Фонда Билла и Мелинды Гейтс.В период с 1996 по 2007 год и в 2009 году — самый богатый человек планеты по версии журнала Forbes. Его состояние в сентябре 2012 года по данным журнала Forbes оценивалось в 66 млрд долларов, увеличившись на 7 млрд долларов по отношению к тому же месяцу прошлого года. Это 19 раз подряд сделало его самым богатым американцем и вторым во всём мире (его обошёл на 8 млрд. Карлос Слим Элу и его семья).[2]Билл Гейтс является одним из рекордсменов по размеру средств, переданных на благотворительность: в период с 1994 по 2010 г. он вложил в Фонд Билла и Мелинды Гейтс более $28 млрд[3]. В феврале 2010 года Гейтс выступил с предложением ко всем миллиардерам о передаче половины их состояния на благотворительную деятельность.[4]",
                HorizontalSize = 1,
                VerticalSize = 1
            });
            _object[0]._Rubrics[2].Messsages.Add(new ObjectMessage
            {
                Name_Message = "Стив Джобс",
                ImageAdress = "/Assets/Rubric3/Steve.jpg",
                Text_of_Message = "Стив Джобс (англ. Steve Jobs, полное имя Сти́вен Пол Джобс, англ. Steven Paul Jobs; 24 февраля 1955 — 5 октября 2011) — американский предприниматель, дизайнер и изобретатель, получивший широкое признание как харизматичный пионер революции в области персональных компьютеров[1][2]. Один из основателей, председатель совета директоров и CEO корпорации Apple. Один из основателей и CEO киностудии Pixar.В конце 1970-х годов друг Джобса Стив Возняк разработал один из первых персональных компьютеров, обладавший большим коммерческим потенциалом. Компьютер Apple II стал первым массовым продуктом компании Apple, созданной по инициативе Стива Джобса. Позже Джобс увидел коммерческий потенциал графического интерфейса, управляемого мышью, что привело к появлению компьютеров Apple Lisa и, год спустя, Macintosh (Mac).Проиграв борьбу за власть с советом директоров в 1985 году, Джобс покинул Apple и основал NeXT — компанию, разрабатывавшую компьютерную платформу для вузов и бизнеса. В 1986 году он приобрёл подразделение компьютерной графики кинокомпании Lucasfilm, превратив его в студию Pixar. Он оставался CEO Pixar и основным акционером, пока студия не была приобретена The Walt Disney Company в 2006 году, что сделало Джобса крупнейшим частным акционером и членом совета директоров Disney.Трудности с разработкой новой операционной системы для Mac привели к покупке NeXT компанией Apple в 1996 году, для использования ОС NeXTSTEP в качестве основы для Mac OS X. В рамках сделки Джобс получил должность советника Apple. К 1997 году Джобс вернул контроль над Apple, возглавив корпорацию. Под его руководством компания была спасена от банкротства и через год стала приносить прибыль. В течение следующего десятилетия Джобс руководил разработкой iMac, iTunes, iPod, iPhone и iPad, а также развитием Apple Store, iTunes Store и App Store. Успех этих продуктов и услуг, обеспечивший несколько лет стабильной финансовой прибыли, позволил Apple стать в 2011 году самой дорогой публичной компанией в мире. Многие комментаторы называют возрождение Apple одним из величайших свершений в истории бизнеса. В то же время Джобса критиковали за авторитарный стиль управления, агрессивные действия по отношению к конкурентам, стремление к тотальному контролю за продукцией даже после её реализации покупателю.Джобс получил общественное признание и ряд наград за оказанное влияние на индустрию технологий и музыки. Его часто называют «визионером» и даже «отцом цифровой революции». Джобс был блестящим оратором и вывел презентации инновационных продуктов на новый уровень, превратив их в увлекательные шоу. Его легко узнаваемая фигура в чёрной водолазке, потёртых джинсах и кроссовках окружена своеобразным культом.После восьми лет борьбы с болезнью, в 2011 году Стив Джобс умер от рака поджелудочной железы.",
                HorizontalSize = 1,
                VerticalSize = 1
            });
            _object[0]._Rubrics[2].Messsages.Add(new ObjectMessage
            {
                Name_Message = "Марк Цукерберг",
                ImageAdress = "/Assets/Rubric3/Maykl.jpg",
                Text_of_Message = "Марк Цукерберг родился 14 мая 1984 года в городе Уайт-Плейнс (штат Нью-Йорк), что в нескольких километрах к северу от города Нью-Йорка. Отец Цукерберга работал стоматологом (и в 2012 году продолжал ещё работать), а мать — психиатром. Был 2-м ребёнком и единственным мальчиком из 4-х детей в семье; его сёстры — Рэнди (старшая), Донна и Ариэль.В школьные годы увлёкся компьютерным программированием, разработал сетевую версию игры «Риск». Отвергнув предложения о трудоустройстве со стороны AOL и Microsoft, поступил в Гарвардский университет на факультет психологии[2]. В Гарварде Марк дополнительно посещал курсы IT.Именно в Гарварде Цукерберг совместно с Крисом Хьюзом и Дастином Московицем начал создавать социальную сеть Facebook[3]. Финансовую помощь ему оказывал студент бразильского происхождения Эдуардо Саверин. Цукерберг неоднократно характеризовал себя как хакера по призванию[4]. Его попытки отстранить Саверина от управления компанией в 2005 году стали предметом судебного разбирательства.В январе 2009 года в Пало-Альто познакомился с Юрием Мильнером[5]. 26 мая 2009 года было подписано соглашение, по которому DST за 200 млн долларов США купила 1,96 % акций Facebook[5].Разбогатев, Марк Цукерберг стал самым молодым в истории миллиардером, поскольку владеет 24 % компании «Facebook». В марте 2010 года журнал «Forbes» признал его одним из самых молодых миллиардеров в своём списке с состоянием 4 млрд долларов США[6]. В списке самых богатых американцев, опубликованном журналом «Forbes» в сентябре 2010 года, Цукерберг занял 29-е место с состоянием в 7 млрд долларов США[7].В 2010 году журнал Time назвал Цукерберга человеком года[8].8 декабря 2010 года Марк Цукерберг объявил, что он присоединился к «Клятве дарения», филантропической кампании миллиардеров Уоррена Баффетта и Билла Гейтса[9][10].В рейтинге 400 самых богатых людей США, опубликованном журналом Forbes в 2011 году, Цукерберг занял 14-е место с состоянием в 17,5 млрд долларов США. На начало 2010 года его состояние оценивалось в 6,9 млрд, а за 2010 год оно увеличилось на 245 %[11].10 марта 2013 года Марк Цукерберг попал в Топ-10 самых молодых миллиардеров по версии Forbes он занимает 2 место в рейтинге, его состояние насчитывает 13,3 млрд $ [12].19 мая 2012 года Марк Цукерберг женился на своей давней подруге Присцилле Чан (Priscilla Chan). Пара устроила празднование по поводу получения Присциллой докторской степени по медицине, однако когда близкие друзья и члены семьи появились на заднем дворе дома молодых в Пало-Альто, им объявили, что они попали на свадьбу. Как сказал представитель пары, свадьба не была приурочена к выходу Facebook на IPO, скорее, к окончанию обучения Присциллы[13].",
                HorizontalSize = 1,
                VerticalSize = 1
            });
         

            SortRubric();
            SortMessage();
            cvsMain.Source = _object;
            cvsMain2.Source = _object[0]._Rubrics;          
        }

        private void gvMain_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            this.Frame.Navigate(typeof(RubricPage), gvMain.SelectedIndex.ToString());
        }

        //----------------------------------------
        // Метод сортировки двух string переменных
        static bool Sort(string s1, string s2)
        {
            for (int i = 0; i < (s1.Length > s2.Length ? s2.Length : s1.Length); i++)
            {
                if (s1.ToCharArray()[i] < s2.ToCharArray()[i]) return false;
                if (s1.ToCharArray()[i] > s2.ToCharArray()[i]) return true;
            }
            return false;
        }
        
        // Сортировка всех рубрик
        public void SortRubric()
        {
            var ListCollection = new List <string>();

            for (int i = 0; i < _object[0]._Rubrics.Count; i++)
            {
                ListCollection.Add(_object[0]._Rubrics[i].RubrikName);
            }

            string[] arr = ListCollection.ToArray();
            for (int i = 0; i < arr.Length; i++)
            {
                for (int j = 0; j < arr.Length - 1; j++)
                {
                    if (Sort(arr[j], arr[j + 1]))
                    {
                        string str = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = str;
                        _object[0]._Rubrics.Move(j, j + 1);
                    }
                }
            }
        }

        // Сортировка всех сообщений во всех рубриках
        public void SortMessage()
        {
            for (int k = 0; k < _object[0]._Rubrics.Count; k++)
            {
                var ListCollection = new List <string>();

                for (int i = 0; i < _object[0]._Rubrics[k].Messsages.Count; i++)
                {
                    ListCollection.Add(_object[0]._Rubrics[k].Messsages[i].Name_Message);
                }

                string[] arr = ListCollection.ToArray();
                for (int i = 0; i < arr.Length; i++)
                {
                    for (int j = 0; j < arr.Length - 1; j++)
                    {
                        if (Sort(arr[j], arr[j + 1]))
                        {
                            string str = arr[j];
                            arr[j] = arr[j + 1];
                            arr[j + 1] = str;
                            _object[0]._Rubrics[k].Messsages.Move(j, j + 1);
                        }
                    }
                }
            }
        }

        private void gvMain2_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            this.Frame.Navigate(typeof(MessagePage), "1*1");
        }
        //----------------------------------------
    }
}
